﻿using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Szabalyrendszer;
using Szabalyrendszer.Modositok;

namespace SzabalyrendszerTesztek
{
    [TestClass]
    public class FegyverzetTesztek
    {
        private List<Bonusz> FegyerHasznalatBonuszok(int szint)
        {
            var bonuszok = new List<Bonusz>();
            if (szint == 5)
            {
                bonuszok.Add(new HarcertekBonusz
                                 {
                                     Ke = 5,
                                     Te = 10,
                                     Ve = 10
                                 });
                bonuszok.Add(new SebzesBonusz { Plusz = 1});
            }

            return bonuszok;
        }

        private Fegyverzet FegyverKeszito(List<Bonusz> bonuszok)
        {
            var fegyver = new Fegyverzet
                       {
                           Tipus = "lovagkard",
                           Meretkategoria = 4,
                           Idoigeny = 5,
                           Sebzes = new PotencialisSebzes { N = 3, K = 6, SebzesTipus =SebzesTipus.Fegyver, SfeErvenyesul = true },
                           Ke = 3,
                           Te = 12,
                           Ve = 15,
                           VanLefegyverzes = true,
                           VanFegyvertores = true,
                           VanAtutes = true
                       };
            if (bonuszok != null)
            {
                fegyver.HarcertekBonuszok.AddRange(bonuszok.OfType<HarcertekBonusz>());
                fegyver.SebzesBonuszok.AddRange(bonuszok.OfType<SebzesBonusz>());
            }
            return fegyver;
        }

        [TestMethod]
        public void Fegyverzet_5SzintuFegyerhasznalat_HelyesKe()
        {
            var fegyver = FegyverKeszito(FegyerHasznalatBonuszok(5));
            Assert.AreEqual(8,fegyver.Ke);
        }

        [TestMethod]
        public void Fegyverzet_5SzintuFegyerhasznalat_HelyesTe()
        {
            var fegyver = FegyverKeszito(FegyerHasznalatBonuszok(5));
            Assert.AreEqual(22, fegyver.Te);
        }

        [TestMethod]
        public void Fegyverzet_5SzintuFegyerhasznalat_HelyesVe()
        {
            var fegyver = FegyverKeszito(FegyerHasznalatBonuszok(5));
            Assert.AreEqual(25, fegyver.Ve);
        }
    }
}
